﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using ComunesMGI.Enums;
using ComunesMGI.Condiciones;

namespace ClienteWinMGI.Logica
{
    public interface IIncidentes
    {

        List<DataIncidente> GetIncidentes(int idSis, List<Condicion> condiciones);

        List<DataCampo> GetCampos(int idSistema, Lista lista);
        List<DataTarea> GetTareas(int sistema, int incidente);
        bool AsignarResposable(int sistema, int incidente, DataTarea tarea, DataUsuario usuario);
        DataAltaIncidente AddIncidente(DataSistema incidente, List<string> archivos);
       
        
        int AddWorkPackage(int idSis, DataWP wp);
        
        List<DataWP> GetWorkPackages(int idSistema);
        
        void AsociarIncidentesWP(int idSis, int idWP, List<int> incidentes);
        
        List<DataIncidenteReporte> GetIncidentesCerradosPeriodo(List<int> sistemas, DateTime fechaDesde, DateTime fechaHasta);
        
        List<DataIncidente> GetIncidentesWP(int idSis, int idWP);

        List<DataEstadoWP> GetEstadosWP();

        bool ChkWPIncidentesOTareasSinCerrar(int idWP);

        void ModificarWP(DataWP wp, bool cerrarTodo);

        List<DataIncidenteReporte> VisualizarIncidentesAsignados(List<int> sistemas, string usuario, string estado,DateTime fechaDesde, DateTime fechaHasta);

        List<DataIncidente> GetIncidentesAsignablesWP(int wkpCod);

        DataAltaTarea AddTarea(int siscod, int idIncidente, List<DataCampo> campos);

        List<DataIncidenteReporte> GetIncidentesCreadosPeriodo(List<int> lds, DateTime dateDesde, DateTime fechaHasta);

        DataIncidenteConCampos GetIncidente(int idIncidente, int idSistema);
        DataTareaConCampos GetTarea(int idTarea, int idSistema);

        void ModificarIncidente(int idSistema, DataIncidenteConCampos incidente);
        void ModificarTarea(int idSistema, DataTareaConCampos tarea);

        List<DataWPReporte> GetWorkPackagesDadosAltaPeriodo(List<int> sistemas, DateTime perFchIni, DateTime perFchFin);


        void DesasociarIncidentesWP(int wkpCod, List<int> incidentes);
    }
}
